Years ago, in the infancy of the computer age, it was not uncommon for a single programmer to develop a software application. Building a simple application often required no more than compiling it. Today, however, software applications are much more complex. Typically a software application is the work product of teams of programmers with each individual programmer responsible for only a small part of the total project. Today's typical build process may include many steps, including: getting the latest versions of source files from a version control system, specifying build options and configurations, recompiling the libraries and packages used by the application, building the application, creating an installation package or packages that install the software application and its deliverable files on a computer system and more.
Applications can be built manually or they can be built by creating batch files or script routines. Building an application manually is often tedious, repetitious, inefficient and prone to errors. For example, specifying an incorrect build version number or compiling an application with incorrect options is very easy to do. Creating batch files may require working on the command line and typically does not provide an easy way to handle errors, monitor build status, stop the build, etc. Also, some tasks simply cannot be done on the command line. Creating a script routine to perform the desired build steps is not easy either. In addition to writing script to perform the specific steps needed for the build, the execution log should be maintained and errors should be handled, etc.
Automated build solutions typically use pre-existing modifiable scripts to build an application or group of programs. Automated build solutions solve some of the problems described above, but one problem shared by all build methods is the length of time it takes to build large projects. Builds of typical large software systems still take hours, if not days, despite the tremendous advances in CPU and disk speeds in recent years.